# -*- coding:utf-8 -*-
import csv
from datetime import datetime



class ApiLogger:
    def __init__(self, filename='api_requests.csv'):
        self.filename = filename
        self.fieldnames = ['timestamp', 'url', 'method', 'params', 'data', 'json', 'response_time']

        # 初始化CSV文件，确保有正确的表头
        with open(self.filename, mode='a', newline='') as file:
            writer = csv.DictWriter(file, fieldnames=self.fieldnames)
            # 如果文件为空，则写入表头
            if file.tell() == 0:
                writer.writeheader()

    def log_request(self, url, method, params,data,json, response_time):
        """
        记录一次API请求的信息。

        :param url: API的URL
        :param method: 请求的方法（GET, POST, etc.）
        :param params: 请求的参数（可以是字典或字符串形式）
        :param response_time: 响应时间（毫秒）
        """
        timestamp = datetime.now().strftime('%Y-%m-%d %H:%M:%S')
        request_data = {
            'timestamp': timestamp,
            'url': url,
            'method': method,
            'params': str(params),  # 将参数转换为字符串以适应CSV格式
            'data': str(data),
            'json': str(json),
            'response_time': response_time
        }

        with open(self.filename, mode='a', newline='') as file:
            writer = csv.DictWriter(file, fieldnames=self.fieldnames)
            writer.writerow(request_data)
